/*
 * Copyright (c) 2018-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

namespace TencentCloud.Cwp.V20180228.Models
{
    using Newtonsoft.Json;
    using System.Collections.Generic;
    using TencentCloud.Common;

    public class DescribeVulFixStatusResponse : AbstractModel
    {
        
        /// <summary>
        /// Fixing start time
        /// Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("FixStartTime")]
        public string FixStartTime{ get; set; }

        /// <summary>
        /// Fixing end time. If this parameter is left blank, fixing is not ended.
        /// Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("FixEndTime")]
        public string FixEndTime{ get; set; }

        /// <summary>
        /// Number of successfully fixed hosts
        /// Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("FixSuccessCnt")]
        public ulong? FixSuccessCnt{ get; set; }

        /// <summary>
        /// Number of hosts failed to be fixed
        /// </summary>
        [JsonProperty("FixFailCnt")]
        public ulong? FixFailCnt{ get; set; }

        /// <summary>
        /// Total number of hosts
        /// </summary>
        [JsonProperty("HostCnt")]
        public ulong? HostCnt{ get; set; }

        /// <summary>
        /// Fixing task ID
        /// </summary>
        [JsonProperty("FixId")]
        public ulong? FixId{ get; set; }

        /// <summary>
        /// Status list of snapshots to be fixed
        /// Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("SnapshotList")]
        public VulFixStatusSnapshotInfo[] SnapshotList{ get; set; }

        /// <summary>
        /// Details list of vulnerabilities to be fixed
        /// Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("VulFixList")]
        public VulFixStatusInfo[] VulFixList{ get; set; }

        /// <summary>
        /// Snapshot creation progress (0-100)
        /// </summary>
        [JsonProperty("SnapshotProgress")]
        public ulong? SnapshotProgress{ get; set; }

        /// <summary>
        /// Fixing progress (0-100)
        /// </summary>
        [JsonProperty("FixProgress")]
        public ulong? FixProgress{ get; set; }

        /// <summary>
        /// Estimated remaining time (seconds)
        /// </summary>
        [JsonProperty("RemainingTime")]
        public ulong? RemainingTime{ get; set; }

        /// <summary>
        /// Whether the snapshot is retried. 0: no; 1: yes.
        /// </summary>
        [JsonProperty("IsRetrySnapshot")]
        public ulong? IsRetrySnapshot{ get; set; }

        /// <summary>
        /// Number of snapshots failed to be created
        /// Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("SnapshotFailCnt")]
        public ulong? SnapshotFailCnt{ get; set; }

        /// <summary>
        /// Whether retry is allowed. 0: not allowed; 1: allowed.Note: This field may return null, indicating that no valid values can be obtained.
        /// </summary>
        [JsonProperty("IsAllowRetry")]
        public ulong? IsAllowRetry{ get; set; }

        /// <summary>
        /// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
        /// </summary>
        [JsonProperty("RequestId")]
        public string RequestId{ get; set; }


        /// <summary>
        /// For internal usage only. DO NOT USE IT.
        /// </summary>
        public override void ToMap(Dictionary<string, string> map, string prefix)
        {
            this.SetParamSimple(map, prefix + "FixStartTime", this.FixStartTime);
            this.SetParamSimple(map, prefix + "FixEndTime", this.FixEndTime);
            this.SetParamSimple(map, prefix + "FixSuccessCnt", this.FixSuccessCnt);
            this.SetParamSimple(map, prefix + "FixFailCnt", this.FixFailCnt);
            this.SetParamSimple(map, prefix + "HostCnt", this.HostCnt);
            this.SetParamSimple(map, prefix + "FixId", this.FixId);
            this.SetParamArrayObj(map, prefix + "SnapshotList.", this.SnapshotList);
            this.SetParamArrayObj(map, prefix + "VulFixList.", this.VulFixList);
            this.SetParamSimple(map, prefix + "SnapshotProgress", this.SnapshotProgress);
            this.SetParamSimple(map, prefix + "FixProgress", this.FixProgress);
            this.SetParamSimple(map, prefix + "RemainingTime", this.RemainingTime);
            this.SetParamSimple(map, prefix + "IsRetrySnapshot", this.IsRetrySnapshot);
            this.SetParamSimple(map, prefix + "SnapshotFailCnt", this.SnapshotFailCnt);
            this.SetParamSimple(map, prefix + "IsAllowRetry", this.IsAllowRetry);
            this.SetParamSimple(map, prefix + "RequestId", this.RequestId);
        }
    }
}

